package com.ggkt.redis;

import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @author ggkt
 * @date 2021-04-25
 * 使用带有连接池的数据库，可以有效控制连接，同时提高效率，标准使用方式：
 */

@Slf4j
public class RedisPool {
    //主方法调用测试
    public static void main(String[] args) {
        //获得redis链接资源,并请求redis.
        Jedis jedis= RedisPool.getJedisFromPool();
        jedis.set("ggkt","6666");
        //将资源归还到连接池
        if (jedis != null){
            jedis.close();
        }
    }

    //从链接获取redis链接对象Jedis;
    public static Jedis getJedisFromPool(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(5);
        jedisPoolConfig.setMaxIdle(2);
        jedisPoolConfig.setTestOnBorrow(true);
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "192.168.192.127", 6379, 3000, null);
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            return jedis;
        } catch (Exception e) {
            log.error("op key {} error: " + e.getMessage(), e);
        } finally {
            //注意这里不是关闭连接，在JedisPool模式下，Jedis会被归还给资源池。
            if (jedis != null){
                jedis.close();
            }
        }
        return null;
    }




    public void preLoadPool(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(5);
        jedisPoolConfig.setMaxIdle(2);
        jedisPoolConfig.setTestOnBorrow(true);
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "192.168.192.127", 6379, 3000, null);
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            //具体的命令
            //jedis.executeCommand();
        } catch (Exception e) {
            log.error("op key {} error: " + e.getMessage(), e);
        } finally {
            //注意这里不是关闭连接，在JedisPool模式下，Jedis会被归还给资源池。
            if (jedis != null){
                jedis.close();
            }
        }
    }


}
